/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.ufc.quixada.adrs.comandos.admin;

import br.ufc.quixada.adrs.interfaces.Comando;
import br.ufc.quixada.adrs.model.Adrs;
import br.ufc.quixada.adrs.model.Produtor;
import br.ufc.quixada.adrs.service.ProdutorService;
import br.ufc.quixada.adrs.util.Msg;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 *
 * @author Welligton
 */
public class CmdMontaRelatorioPassoTres implements Comando {

    public String executa(HttpServletRequest request, HttpServletResponse response) {

        HttpSession sessao = request.getSession(true);
        String retorno = request.getParameter("retorno");
        String retornoAnterior = (String) sessao.getAttribute("retornoAnterior3");
        List<Long> idProd = new ArrayList<Long>();
        boolean hasProdutorComboBoxSelected = request.getParameter("cb") != null ? true : false;
        if (hasProdutorComboBoxSelected) {
            String arrayProdutorIDComboBox[] = request.getParameterValues("cb");
            for (int i = 0; i < arrayProdutorIDComboBox.length; i++) {
                idProd.add(Long.parseLong(arrayProdutorIDComboBox[i]));
            }
        } else {
            sessao.setAttribute("erro", Msg.EMPTY_SELECTION_ERROR_PRODUTOR);
            return "/admin/" + retornoAnterior + ".jsp";
        }
        List<Produtor> listaProdutor = new ArrayList<Produtor>();
        List<Adrs> listaAdrsSelecionado = (List<Adrs>) sessao.getAttribute("adrsSelecionadoQSanitario");
        for (Adrs ad : listaAdrsSelecionado) {
            for (Produtor prod : ad.getProdutores()) {
                for (Long id : idProd) {
                    if (id.equals(prod.getId())) {
                        listaProdutor.add(prod);
                        break;
                    }
                }
            }
        }
        Collections.sort(listaProdutor, ProdutorService.comparadorPorMunicipioENome);
        sessao.setAttribute("produtoresSelecionadoQS", listaProdutor);
        return "/admin/" + retorno + ".jsp";
    }
}
